// 提供访问数据库的接口

const WXAPP = getApp();
const db = wx.cloud.database();

/** 澡堂状态 */
const NWPU = db.collection("NWPU");

/** 预约队列 */
const QUEUE = db.collection("NWPU-Queue");

/** 用户信息数据库 */
const USERINFO = db.collection("userInfo");

/** 订单预约历史记录 */
const ORDERHISTORY = db.collection("orderHistory");

// 保存按钮状态
const ORDERSTATUS = db.collection("orderStatus");

/**
 * 上传用户地址，location是chooseLocation插件的`getLocation`函数的返回值
 */
export function pushUserLocation(location) {
    USERINFO.doc(WXAPP.globalData.openid).update({
        data: {
            chooseLocation: location
        }
    }).then(() => {
        console.log("success push location\n", location);
    }).catch(err => {
        console.error("fail push location\n", err);
    });
}

/**
 * 拉取用户的所有信息，如楼层，地址等并放入`WXAPP.globalData`的相应字段中
 * @param resolve 数据库API的`Document.get()`方法的res
 */
function pullUserAllInfo() {
    return new Promise((resolve, reject) => {
        USERINFO.doc(WXAPP.globalData.openid).get().then(res => {
            console.log("success pull userinfo");
            WXAPP.globalData.chooseLocation = res.data.chooseLocation;
            WXAPP.globalData.domitoryInfo = res.data.domitoryInfo;
            console.log(res);
            resolve(res);
        }).catch(err => {
            console.error("fail pull userinfo\n", err);
            reject(err);
        })
    });
}

/***
 * 将`app.globalData.domitoryInfo`的东西上传
 * @param domitoryInfo app.globalData.domitoryInfo
 */
export function pushUserDomitoryInfo(domitoryInfo) {
    USERINFO.doc(WXAPP.globalData.openid).update({
        data: {
            domitoryInfo: domitoryInfo
        }
    }).then(() => {
        console.log("success push dominfo\n", domitoryInfo);
    }).catch(err => {
        console.error("fail push dominfo\n", err);
    });
}

function newUserInfo() {
    return new Promise((resolve, reject) => {
        console.log("new user info openid", WXAPP.globalData.openid);
        ORDERSTATUS.add({
          data:{
            _id:WXAPP.globalData.openid,
            canPressOrder:true,
            isHideOrderButton:false,
            isOrdered:false,
            orderNow:false,
            predit:0
          }
        });//创建新用户的同时更新个人的按钮状态

        USERINFO.add({
            data: {
                _id: WXAPP.globalData.openid,
                chooseLocation: WXAPP.globalData.chooseLocation,
                domitoryInfo: WXAPP.globalData.domitoryInfo,
                credit:3//用户初始的信用分是3
            }
        }).then(res => {
            console.log("success new userinfo ", res);
            resolve();
        }).catch(err => {
            console.error("fail new userinfo\n", err);
            reject();
        });
    });
}

/** 检查userInfo数据库，看看是不是老用户，并进行相应的处理 */
export function checkUserDatabase() {
    return new Promise((resolve, reject) => {
        USERINFO.doc(WXAPP.globalData.openid).get().
            then(() => {
                console.log("数据库老用户!!!");
                pullUserAllInfo().then(() => {
                    resolve();
                });
            }).catch(err => {
                console.error("数据库新用户，正在创建新项\n", err);
                newUserInfo().then(() => {
                    resolve();
                })
            });
    });
}


/** 预约记录的数据格式 */
let orderHistoryDataFormat = {
    _id: '使用自动的ID',
    description: "这是数据格式示例",
    requestTime: db.serverDate(),   // 使用时间
    duration: -1,                // 使用时长，-1表示违约
    domitoryInfo: WXAPP.globalData.domitoryInfo,
    acceptCrossFloor: true
};

/** 队列数据库的数据格式 */
let queueDataFormat = {
    _id: "user's openid",
    description: "这是数据格式示例",
    requestTime: db.serverDate(),
    domitoryInfo:WXAPP.globalData.domitoryInfo,
    acceptCrossFloor: true
}

/** 用户信息的数据格式 */
let userInfoDataFormat = {
    _id: "user's openid",
    description: "这是数据格式示例",
    chooseLocation: WXAPP.globalData.chooseLocation,
    domitoryInfo: WXAPP.globalData.domitoryInfo
}

orderHistoryDataFormat, queueDataFormat, userInfoDataFormat;
